package com.boarsoft.config.core;

import java.io.FileFilter;
import java.io.UnsupportedEncodingException;

/**
 * 每个ConfigListener负责某个独立的配置目录，或在某个公共配置文件目录下，按文件名匹配的部份的文件
 * 
 * @author Jenny
 *
 */
public interface ConfigListener {
	/**
	 * 当文件被成功下载或更新时触发此事件
	 * 
	 * @param frp
	 *            config file's relative path
	 * @return
	 */
	boolean onReady(String frp);

	/**
	 * 删除某个配置文件时触发
	 * 
	 * @param rp
	 * @return
	 */
	boolean onRemove(String frp);

	/**
	 * 
	 * @return
	 */
	FileFilter getFileFilter();

	/**
	 * 根据配置文件相对路径的返回绝对路径，这个路径可以是直接配置的<br>
	 * 也可以取自环境变量，也可以是classpath<br>
	 * 
	 * @return
	 */
	String getAbosoluteDir();

	/**
	 * 相对AbosoluteDir的配置文件目录
	 * 
	 * @return
	 */
	String getRelativeDir();

	/**
	 * 根据配置文件相对路径的返回绝对路径，这个路径可以是直接配置的<br>
	 * 也可以取自环境变量，也可以是classpath
	 * 
	 * @param rp
	 *            config file's relative path
	 * @return
	 */
	String getAbosultePath(String rp) throws UnsupportedEncodingException;

	String getAbosultePath();
}